// Copyright personal possession of Nguyen Minh Kha
// Datetime: 03:56PM 09/27/2011
// Discription: This class manage all game object in game, it may have two part
// Licencse: Free source
// Version: 1.0
// Writer: Nguyen Minh Kha

/* Google opensource coding standard with variable name exception */

#ifndef GAMEFRAMEWORK_OBJECTS_MANAGER_H_
#define GAMEFRAMEWORK_OBJECTS_MANAGER_H_

#include <Windows.h>

#include "game_object.h"


class ObjectsManager {
  
  /* Struct */
private:
  struct List {
    GameObject *object;
    struct List* pNext;
  };
  
  /* Static */

  static ObjectsManager* thisPointer;
public:
  static ObjectsManager* getInstance() {
    return ObjectsManager::thisPointer;}

  /* Constructor; Destructor */
public:
  ObjectsManager(void);
  ~ObjectsManager(void);

  /* Methods */
public:
  void Add(GameObject *object);
  void Delete(GameObject *object);
  void RemoveAll();
  //
  // token call function
  void Inits();
  void Releases();

  /* Data member */
public:
private:
  List* pHead;
};

#endif // GAMEFRAMEWORK_OBJECTS_MANAGER_H_